package com.ruoyi.system.domain.bo;

import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.*;
import java.util.Date;

/**
 * 考勤到岗信息业务对象 attendance
 *
 * @author ruoyi
 * @date 2025-06-11
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class AttendanceBo extends BaseEntity {

    /**
     * 主键ID
     */
    @NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 所属部门
     */
    @NotBlank(message = "所属部门不能为空", groups = { AddGroup.class, EditGroup.class })
    private String department;

    /**
     * 勤务日期
     */
    @NotNull(message = "勤务日期不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date dutyDate;

    /**
     * 勤务类型
     */
    @NotBlank(message = "勤务类型不能为空", groups = { AddGroup.class, EditGroup.class })
    private String dutyType;

    /**
     * 勤务子类型
     */
    @NotBlank(message = "勤务子类型不能为空", groups = { AddGroup.class, EditGroup.class })
    private String dutySubtype;

    /**
     * 勤务地点
     */
    @NotBlank(message = "勤务地点不能为空", groups = { AddGroup.class, EditGroup.class })
    private String dutyLocation;

    /**
     * 排班人员
     */
    @NotNull(message = "排班人员不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long scheduledOfficerId;

    /**
     * 班次名称
     */
    @NotBlank(message = "班次名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String shiftName;

    /**
     * 班次时段
     */
    @NotBlank(message = "班次时段不能为空", groups = { AddGroup.class, EditGroup.class })
    private String shiftTimePeriod;

    /**
     * 到岗时间
     */
    @NotNull(message = "到岗时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date checkInTime;

    /**
     * 离岗时间
     */
    @NotNull(message = "离岗时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date checkOutTime;

    /**
     * 到岗状态
     */
    @NotBlank(message = "到岗状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String checkInStatus;

    /**
     * 离岗状态
     */
    @NotBlank(message = "离岗状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String checkOutStatus;


}
